

<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
  <meta charset="utf-8" />
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  
  <title>Health Reports &mdash; Ceph Documentation</title>
  

  
  <link rel="stylesheet" href="../../_static/ceph.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/graphviz.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/css/custom.css" type="text/css" />

  
  
    <link rel="shortcut icon" href="../../_static/favicon.ico"/>
  

  
  

  

  
  <!--[if lt IE 9]>
    <script src="../../_static/js/html5shiv.min.js"></script>
  <![endif]-->
  
    
      <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
        <script src="../../_static/jquery.js"></script>
        <script src="../../_static/underscore.js"></script>
        <script src="../../_static/doctools.js"></script>
    
    <script type="text/javascript" src="../../_static/js/theme.js"></script>

    
    <link rel="index" title="Index" href="../../genindex/" />
    <link rel="search" title="Search" href="../../search/" />
    <link rel="next" title="IANA 号" href="../iana/" />
    <link rel="prev" title="Ceph 文档的构建" href="../generatedocs/" /> 
</head>

<body class="wy-body-for-nav">

   
  <header class="top-bar">
    

















<div role="navigation" aria-label="breadcrumbs navigation">

  <ul class="wy-breadcrumbs">
    
      <li><a href="../../" class="icon icon-home"></a> &raquo;</li>
        
          <li><a href="../internals/">Ceph 内幕</a> &raquo;</li>
        
      <li>Health Reports</li>
    
    
      <li class="wy-breadcrumbs-aside">
        
          
            <a href="../../_sources/dev/health-reports.rst.txt" rel="nofollow"> View page source</a>
          
        
      </li>
    
  </ul>

  
  <hr/>
</div>
  </header>
  <div class="wy-grid-for-nav">
    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search"  style="background: #eee" >
          

          
            <a href="../../">
          

          
            
            <img src="../../_static/logo.png" class="logo" alt="Logo"/>
          
          </a>

          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../../search/" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        
        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
              
            
            
              <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../start/intro/">Ceph 简介</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../install/">安装 Ceph</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../cephadm/">Cephadm</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../rados/">Ceph 存储集群</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../cephfs/">Ceph 文件系统</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../rbd/">Ceph 块设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../radosgw/">Ceph 对象网关</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../mgr/">Ceph 管理器守护进程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../mgr/dashboard/">Ceph 仪表盘</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../api/">API 文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../architecture/">体系结构</a></li>
<li class="toctree-l1"><a class="reference internal" href="../developer_guide/">开发者指南</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../internals/">Ceph 内幕</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../blkin/">Tracing Ceph With LTTng</a></li>
<li class="toctree-l2"><a class="reference internal" href="../blkin/#tracing-ceph-with-blkin">Tracing Ceph With Blkin</a></li>
<li class="toctree-l2"><a class="reference internal" href="../bluestore/">BlueStore Internals</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cache-pool/">Cache pool</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ceph_krb_auth/">如何配置好 Ceph Kerberos 认证的详细文档</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cephfs-mirroring/">CephFS Mirroring</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cephfs-reclaim/">CephFS Reclaim Interface</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cephfs-snapshots/">CephFS 快照</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cephx/">Cephx</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cephx_protocol/">Cephx 认证协议详细阐述</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/">配置管理系统</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config-key/">config-key layout</a></li>
<li class="toctree-l2"><a class="reference internal" href="../context/">CephContext</a></li>
<li class="toctree-l2"><a class="reference internal" href="../continuous-integration/">Continuous Integration Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../corpus/">资料库结构</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cpu-profiler/">Oprofile 的安装</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cxx/">C++17 and libstdc++ ABI</a></li>
<li class="toctree-l2"><a class="reference internal" href="../deduplication/">去重</a></li>
<li class="toctree-l2"><a class="reference internal" href="../delayed-delete/">CephFS delayed deletion</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dev_cluster_deployement/">开发集群的部署</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dev_cluster_deployement/#id5">在同一机器上部署多套开发集群</a></li>
<li class="toctree-l2"><a class="reference internal" href="../development-workflow/">开发流程</a></li>
<li class="toctree-l2"><a class="reference internal" href="../documenting/">为 Ceph 写作文档</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encoding/">序列化（编码、解码）</a></li>
<li class="toctree-l2"><a class="reference internal" href="../erasure-coded-pool/">纠删码存储池</a></li>
<li class="toctree-l2"><a class="reference internal" href="../file-striping/">File striping</a></li>
<li class="toctree-l2"><a class="reference internal" href="../freebsd/">FreeBSD Implementation details</a></li>
<li class="toctree-l2"><a class="reference internal" href="../generatedocs/">Ceph 文档的构建</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Health Reports</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#how-to-get-reports">How to Get Reports</a></li>
<li class="toctree-l3"><a class="reference internal" href="#where-are-the-reports-generated">Where are the Reports Generated</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#aggregator-of-aggregators">Aggregator of Aggregators</a></li>
<li class="toctree-l4"><a class="reference internal" href="#ceph-mgr-a-delegate-aggegator">ceph-mgr – A Delegate Aggegator</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../iana/">IANA 号</a></li>
<li class="toctree-l2"><a class="reference internal" href="../kubernetes/">Hacking on Ceph in Kubernetes with Rook</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libs/">库体系结构</a></li>
<li class="toctree-l2"><a class="reference internal" href="../logging/">集群日志的用法</a></li>
<li class="toctree-l2"><a class="reference internal" href="../logs/">调试日志</a></li>
<li class="toctree-l2"><a class="reference internal" href="../macos/">在 MacOS 上构建</a></li>
<li class="toctree-l2"><a class="reference internal" href="../messenger/">Messenger notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mon-bootstrap/">Monitor bootstrap</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mon-elections/">Monitor Elections</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mon-on-disk-formats/">ON-DISK FORMAT</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mon-osdmap-prune/">FULL OSDMAP VERSION PRUNING</a></li>
<li class="toctree-l2"><a class="reference internal" href="../msgr2/">msgr2 协议（ msgr2.0 和 msgr2.1 ）</a></li>
<li class="toctree-l2"><a class="reference internal" href="../network-encoding/">Network Encoding</a></li>
<li class="toctree-l2"><a class="reference internal" href="../network-protocol/">网络协议</a></li>
<li class="toctree-l2"><a class="reference internal" href="../object-store/">对象存储架构概述</a></li>
<li class="toctree-l2"><a class="reference internal" href="../osd-class-path/">OSD class path issues</a></li>
<li class="toctree-l2"><a class="reference internal" href="../peering/">互联</a></li>
<li class="toctree-l2"><a class="reference internal" href="../perf/">Using perf</a></li>
<li class="toctree-l2"><a class="reference internal" href="../perf_counters/">性能计数器</a></li>
<li class="toctree-l2"><a class="reference internal" href="../perf_histograms/">Perf histograms</a></li>
<li class="toctree-l2"><a class="reference internal" href="../placement-group/">PG （归置组）说明</a></li>
<li class="toctree-l2"><a class="reference internal" href="../quick_guide/">开发者指南（快速）</a></li>
<li class="toctree-l2"><a class="reference internal" href="../rados-client-protocol/">RADOS 客户端协议</a></li>
<li class="toctree-l2"><a class="reference internal" href="../rbd-diff/">RBD 增量备份</a></li>
<li class="toctree-l2"><a class="reference internal" href="../rbd-export/">RBD Export &amp; Import</a></li>
<li class="toctree-l2"><a class="reference internal" href="../rbd-layering/">RBD Layering</a></li>
<li class="toctree-l2"><a class="reference internal" href="../release-checklists/">Release checklists</a></li>
<li class="toctree-l2"><a class="reference internal" href="../release-process/">Ceph Release Process</a></li>
<li class="toctree-l2"><a class="reference internal" href="../seastore/">SeaStore</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sepia/">Sepia 社区测试实验室</a></li>
<li class="toctree-l2"><a class="reference internal" href="../session_authentication/">Session Authentication for the Cephx Protocol</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/">测试笔记</a></li>
<li class="toctree-l2"><a class="reference internal" href="../versions/">Public OSD Version</a></li>
<li class="toctree-l2"><a class="reference internal" href="../vstart-ganesha/">NFS CephFS-RGW Developer Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="../wireshark/">Wireshark Dissector</a></li>
<li class="toctree-l2"><a class="reference internal" href="../zoned-storage/">Zoned Storage Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="../osd_internals/">OSD 开发者文档</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mds_internals/">MDS 开发者文档</a></li>
<li class="toctree-l2"><a class="reference internal" href="../radosgw/">RADOS 网关开发者文档</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ceph-volume/">ceph-volume 开发者文档</a></li>
<li class="toctree-l2"><a class="reference internal" href="../crimson/">Crimson developer documentation</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../governance/">项目管理</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../foundation/">Ceph 基金会</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ceph-volume/">ceph-volume</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../releases/general/">Ceph 版本（总目录）</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../releases/">Ceph 版本（索引）</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../security/">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../glossary/">Ceph 术语</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../jaegertracing/">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../translation_cn/">中文版翻译资源</a></li>
</ul>

            
          
        </div>
        
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" aria-label="top navigation">
        
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../../">Ceph</a>
        
      </nav>


      <div class="wy-nav-content">
        
        <div class="rst-content">
        
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
<div id="dev-warning" class="admonition note">
  <p class="first admonition-title">Notice</p>
  <p class="last">This document is for a development version of Ceph.</p>
</div>
  <div id="docubetter" align="right" style="padding: 5px; font-weight: bold;">
    <a href="https://pad.ceph.com/p/Report_Documentation_Bugs">Report a Documentation Bug</a>
  </div>

  
  <div class="section" id="health-reports">
<h1>Health Reports<a class="headerlink" href="#health-reports" title="Permalink to this headline">¶</a></h1>
<div class="section" id="how-to-get-reports">
<h2>How to Get Reports<a class="headerlink" href="#how-to-get-reports" title="Permalink to this headline">¶</a></h2>
<p>In general, there are two channels to retrieve the health reports:</p>
<dl class="simple">
<dt>ceph (CLI)</dt><dd><p>which sends <code class="docutils literal notranslate"><span class="pre">health</span></code> mon command for retrieving the health status of the cluster</p>
</dd>
<dt>mgr module</dt><dd><p>which calls <code class="docutils literal notranslate"><span class="pre">mgr.get('health')</span></code> for the same report in the form of a JSON encoded string</p>
</dd>
</dl>
<p>The following diagrams outline the involved parties and how the interact when the clients
query for the reports:</p>
<div class="align-default"><svg height="570" viewBox="0 0 640 570" width="640" xmlns="http://www.w3.org/2000/svg" xmlns:inkspace="http://www.inkscape.org/namespaces/inkscape" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs id="defs_block">
    <filter height="1.504" id="filter_blur" inkspace:collect="always" width="1.1575" x="-0.07875" y="-0.252">
      <feGaussianBlur id="feGaussianBlur3780" inkspace:collect="always" stdDeviation="4.2" />
    </filter>
  </defs>
  <title>blockdiag</title>
  <desc />
  <rect fill="rgb(0,0,0)" height="407" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="127" y="141" />
  <rect fill="rgb(0,0,0)" height="50" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="319" y="141" />
  <rect fill="rgb(0,0,0)" height="50" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="319" y="256" />
  <rect fill="rgb(0,0,0)" height="131" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="319" y="371" />
  <polygon fill="rgb(0,0,0)" points="121,414 299,414 307,422 307,429 121,429 121,414" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="67" y="46" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="259" y="46" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="451" y="46" />
  <path d="M 128 80 L 128 558" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="moccasin" height="407" stroke="rgb(0,0,0)" width="8" x="124" y="135" />
  <path d="M 320 80 L 320 558" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="moccasin" height="50" stroke="rgb(0,0,0)" width="8" x="316" y="135" />
  <rect fill="moccasin" height="50" stroke="rgb(0,0,0)" width="8" x="316" y="250" />
  <rect fill="moccasin" height="131" stroke="rgb(0,0,0)" width="8" x="316" y="365" />
  <path d="M 512 80 L 512 558" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="64" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="18" x="128.0" y="66">osd</text>
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="256" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="18" x="320.0" y="66">mon</text>
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="448" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="48" x="512.0" y="66">ceph-cli</text>
  <path d="M 136 135 L 312 135" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="304,131 312,135 304,139" stroke="rgb(0,0,0)" />
  <path d="M 136 185 L 312 185" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="144,181 136,185 144,189" stroke="rgb(0,0,0)" />
  <path d="M 136 250 L 312 250" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="304,246 312,250 304,254" stroke="rgb(0,0,0)" />
  <path d="M 136 300 L 312 300" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="144,296 136,300 144,304" stroke="rgb(0,0,0)" />
  <path d="M 328 365 L 504 365" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="336,361 328,365 336,369" stroke="rgb(0,0,0)" />
  <path d="M 328 415 L 416 415" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 416 415 L 416 431" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 416 431 L 328 431" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="336,427 328,431 336,435" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(173,216,230)" points="118,408 296,408 304,416 304,423 118,423 118,408" stroke="rgb(0,0,0)" />
  <path d="M 296 408 L 296 416" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 296 416 L 304 416" fill="none" stroke="rgb(0,0,0)" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="162" x="207.0" y="421">gather checks from services</text>
  <path d="M 328 496 L 504 496" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="496,492 504,496 496,500" stroke="rgb(0,0,0)" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="126" x="203.0" y="133">update osdmap service</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="126" x="203.0" y="248">update osdmap service</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="126" x="441.0" y="363">send 'health' command</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="96" x="380.0" y="494">checks and mutes</text>
</svg>
</div>
<div class="align-default"><svg height="810" viewBox="0 0 832 810" width="832" xmlns="http://www.w3.org/2000/svg" xmlns:inkspace="http://www.inkscape.org/namespaces/inkscape" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs id="defs_block">
    <filter height="1.504" id="filter_blur" inkspace:collect="always" width="1.1575" x="-0.07875" y="-0.252">
      <feGaussianBlur id="feGaussianBlur3780" inkspace:collect="always" stdDeviation="4.2" />
    </filter>
  </defs>
  <title>blockdiag</title>
  <desc />
  <rect fill="rgb(0,0,0)" height="647" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="319" y="141" />
  <rect fill="rgb(0,0,0)" height="50" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="323" y="206" />
  <rect fill="rgb(0,0,0)" height="50" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="323" y="321" />
  <rect fill="rgb(0,0,0)" height="647" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="511" y="141" />
  <rect fill="rgb(0,0,0)" height="116" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="515" y="436" />
  <rect fill="rgb(0,0,0)" height="80" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="515" y="647" />
  <polygon fill="rgb(0,0,0)" points="627,479 763,479 771,487 771,494 627,494 627,479" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="67" y="46" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="259" y="46" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="451" y="46" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="643" y="46" />
  <path d="M 128 80 L 128 798" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <path d="M 320 80 L 320 798" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="moccasin" height="647" stroke="rgb(0,0,0)" width="8" x="316" y="135" />
  <rect fill="moccasin" height="50" stroke="rgb(0,0,0)" width="8" x="320" y="200" />
  <rect fill="moccasin" height="50" stroke="rgb(0,0,0)" width="8" x="320" y="315" />
  <path d="M 512 80 L 512 798" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="moccasin" height="647" stroke="rgb(0,0,0)" width="8" x="508" y="135" />
  <rect fill="moccasin" height="116" stroke="rgb(0,0,0)" width="8" x="512" y="430" />
  <rect fill="moccasin" height="80" stroke="rgb(0,0,0)" width="8" x="512" y="641" />
  <path d="M 704 80 L 704 798" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="64" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="18" x="128.0" y="66">osd</text>
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="256" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="18" x="320.0" y="66">mon</text>
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="448" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="18" x="512.0" y="66">mgr</text>
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="640" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="60" x="704.0" y="66">mgr-module</text>
  <path d="M 328 135 L 504 135" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="336,131 328,135 336,139" stroke="rgb(0,0,0)" />
  <path d="M 136 200 L 312 200" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="304,196 312,200 304,204" stroke="rgb(0,0,0)" />
  <path d="M 136 250 L 312 250" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="144,246 136,250 144,254" stroke="rgb(0,0,0)" />
  <path d="M 136 315 L 312 315" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="304,311 312,315 304,319" stroke="rgb(0,0,0)" />
  <path d="M 136 365 L 312 365" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="144,361 136,365 144,369" stroke="rgb(0,0,0)" />
  <path d="M 328 430 L 504 430" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="496,426 504,430 496,434" stroke="rgb(0,0,0)" />
  <path d="M 524 480 L 608 480" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 608 480 L 608 496" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 608 496 L 524 496" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="532,492 524,496 532,500" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(173,216,230)" points="624,473 760,473 768,481 768,488 624,488 624,473" stroke="rgb(0,0,0)" />
  <path d="M 760 473 L 760 481" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 760 481 L 768 481" fill="none" stroke="rgb(0,0,0)" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="120" x="692.0" y="486">update cluster state</text>
  <path d="M 328 546 L 504 546" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="336,542 328,546 336,550" stroke="rgb(0,0,0)" />
  <path d="M 524 641 L 696 641" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="532,637 524,641 532,645" stroke="rgb(0,0,0)" />
  <path d="M 520 721 L 696 721" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="688,717 696,721 688,725" stroke="rgb(0,0,0)" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="150" x="429.0" y="133">subscribe for 'mgrdigest'</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="126" x="203.0" y="198">update osdmap service</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="126" x="203.0" y="313">update osdmap service</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="90" x="377.0" y="428">send MMgrDigest</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="102" x="645.0" y="639">mgr.get('health')</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="126" x="587.0" y="719">heath reports in json</text>
</svg>
</div>
</div>
<div class="section" id="where-are-the-reports-generated">
<h2>Where are the Reports Generated<a class="headerlink" href="#where-are-the-reports-generated" title="Permalink to this headline">¶</a></h2>
<div class="section" id="aggregator-of-aggregators">
<h3>Aggregator of Aggregators<a class="headerlink" href="#aggregator-of-aggregators" title="Permalink to this headline">¶</a></h3>
<p>Health reports are aggregated from multiple Paxos services:</p>
<ul class="simple">
<li><p>AuthMonitor</p></li>
<li><p>HealthMonitor</p></li>
<li><p>MDSMonitor</p></li>
<li><p>MgrMonitor</p></li>
<li><p>MgrStatMonitor</p></li>
<li><p>MonmapMonitor</p></li>
<li><p>OSDMonitor</p></li>
</ul>
<p>When persisting the pending changes in their own domain, each of them identifies the
health related issues and store them into the monstore with the prefix of <code class="docutils literal notranslate"><span class="pre">health</span></code>
using the same transaction. For instance, <code class="docutils literal notranslate"><span class="pre">OSDMonitor</span></code> checks a pending new osdmap
for possible issues, like down OSDs and missing scrub flag in a pool, and then stores
the encoded form of the health reports along with the new osdmap. These reports are
later loaded and decoded, so they can be collected on demand. When it comes to
<code class="docutils literal notranslate"><span class="pre">MDSMonitor</span></code>, it persists the health metrics in the beacon sent by the MDS daemons,
and prepares health reports when storing the pending changes.</p>
<div class="align-default"><svg height="755" viewBox="0 0 832 755" width="832" xmlns="http://www.w3.org/2000/svg" xmlns:inkspace="http://www.inkscape.org/namespaces/inkscape" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs id="defs_block">
    <filter height="1.504" id="filter_blur" inkspace:collect="always" width="1.1575" x="-0.07875" y="-0.252">
      <feGaussianBlur id="feGaussianBlur3780" inkspace:collect="always" stdDeviation="4.2" />
    </filter>
  </defs>
  <title>blockdiag</title>
  <desc />
  <rect fill="rgb(0,0,0)" height="592" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="127" y="141" />
  <rect fill="rgb(0,0,0)" height="116" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="319" y="141" />
  <rect fill="rgb(0,0,0)" height="65" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="319" y="512" />
  <rect fill="rgb(0,0,0)" height="240" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="511" y="432" />
  <polygon fill="rgb(0,0,0)" points="435,184 631,184 639,192 639,199 435,199 435,184" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" />
  <polygon fill="rgb(0,0,0)" points="435,330 577,330 585,338 585,345 435,345 435,330" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="67" y="46" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="259" y="46" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="451" y="46" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="643" y="46" />
  <path d="M 128 80 L 128 743" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="moccasin" height="592" stroke="rgb(0,0,0)" width="8" x="124" y="135" />
  <path d="M 320 80 L 320 743" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="moccasin" height="116" stroke="rgb(0,0,0)" width="8" x="316" y="135" />
  <rect fill="moccasin" height="65" stroke="rgb(0,0,0)" width="8" x="316" y="506" />
  <path d="M 512 80 L 512 743" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="moccasin" height="240" stroke="rgb(0,0,0)" width="8" x="508" y="426" />
  <path d="M 704 80 L 704 743" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="64" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="18" x="128.0" y="66">mds</text>
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="256" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="42" x="320.0" y="66">mon-mds</text>
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="448" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="60" x="512.0" y="66">mon-health</text>
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="640" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="48" x="704.0" y="66">ceph-cli</text>
  <path d="M 136 135 L 312 135" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="304,131 312,135 304,139" stroke="rgb(0,0,0)" />
  <path d="M 328 185 L 416 185" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 416 185 L 416 201" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 416 201 L 328 201" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="336,197 328,201 336,205" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(173,216,230)" points="432,178 628,178 636,186 636,193 432,193 432,178" stroke="rgb(0,0,0)" />
  <path d="M 628 178 L 628 186" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 628 186 L 636 186" fill="none" stroke="rgb(0,0,0)" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="180" x="530.0" y="191">store health metrics in beacon</text>
  <path d="M 136 251 L 312 251" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="144,247 136,251 144,255" stroke="rgb(0,0,0)" />
  <path d="M 328 331 L 416 331" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 416 331 L 416 347" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 416 347 L 328 347" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="336,343 328,347 336,351" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(173,216,230)" points="432,324 574,324 582,332 582,339 432,339 432,324" stroke="rgb(0,0,0)" />
  <path d="M 574 324 L 574 332" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 574 332 L 582 332" fill="none" stroke="rgb(0,0,0)" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="126" x="503.0" y="337">encode_health(checks)</text>
  <path d="M 520 426 L 696 426" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="528,422 520,426 528,430" stroke="rgb(0,0,0)" />
  <path d="M 328 506 L 504 506" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="336,502 328,506 336,510" stroke="rgb(0,0,0)" />
  <path d="M 328 571 L 504 571" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="496,567 504,571 496,575" stroke="rgb(0,0,0)" />
  <path d="M 520 666 L 696 666" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="688,662 696,666 688,670" stroke="rgb(0,0,0)" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="66" x="173.0" y="133">send beacon</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="126" x="633.0" y="424">send 'health' command</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="120" x="444.0" y="504">gather health checks</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="96" x="572.0" y="664">checks and mutes</text>
</svg>
</div>
<p>So, if we want to add a new warning related to cephfs, probably the best place to
start is <code class="docutils literal notranslate"><span class="pre">MDSMonitor::encode_pending()</span></code>, where health reports are collected from
the latest <code class="docutils literal notranslate"><span class="pre">FSMap</span></code> and the health metrics reported by MDS daemons.</p>
<p>But it’s noteworthy that <code class="docutils literal notranslate"><span class="pre">MgrStatMonitor</span></code> does <em>not</em> prepare the reports by itself,
it just stores whatever the health reports received from mgr!</p>
</div>
<div class="section" id="ceph-mgr-a-delegate-aggegator">
<h3>ceph-mgr – A Delegate Aggegator<a class="headerlink" href="#ceph-mgr-a-delegate-aggegator" title="Permalink to this headline">¶</a></h3>
<p>In Ceph, mgr is created to share the burden of monitor, which is used to establish
the consensus of information which is critical to keep the cluster function.
Apparently, osdmap, mdsmap and monmap fall into this category. But what about the
aggregated statistics of the cluster? They are crucial for the administrator to
understand the status of the cluster, but they might not be that important to keep
the cluster running. To address this scability issue,  we offloaded the work of
collecting and aggregating the metrics to mgr.</p>
<p>Now, mgr is responsible for receiving and processing the <code class="docutils literal notranslate"><span class="pre">MPGStats</span></code> messages from
OSDs. And we also developed a protocol allowing a daemon to periodically report its
metrics and status to mgr using <code class="docutils literal notranslate"><span class="pre">MMgrReport</span></code>. On the mgr side, it periodically sends
an aggregated report to the <code class="docutils literal notranslate"><span class="pre">MgrStatMonitor</span></code> service on mon. As explained earlier,
this service just persists the health reports in the aggregated report to the monstore.</p>
<div class="align-default"><svg height="1635" viewBox="0 0 846 1635" width="846" xmlns="http://www.w3.org/2000/svg" xmlns:inkspace="http://www.inkscape.org/namespaces/inkscape" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs id="defs_block">
    <filter height="1.504" id="filter_blur" inkspace:collect="always" width="1.1575" x="-0.07875" y="-0.252">
      <feGaussianBlur id="feGaussianBlur3780" inkspace:collect="always" stdDeviation="4.2" />
    </filter>
  </defs>
  <title>blockdiag</title>
  <desc />
  <rect fill="rgb(0,0,0)" height="1472" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="127" y="141" />
  <rect fill="rgb(0,0,0)" height="65" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="131" y="352" />
  <rect fill="rgb(0,0,0)" height="116" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="319" y="141" />
  <rect fill="rgb(0,0,0)" height="145" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="319" y="512" />
  <rect fill="rgb(0,0,0)" height="65" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="319" y="752" />
  <rect fill="rgb(0,0,0)" height="65" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="319" y="1312" />
  <rect fill="rgb(0,0,0)" height="65" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="319" y="1472" />
  <rect fill="rgb(0,0,0)" height="145" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="511" y="912" />
  <rect fill="rgb(0,0,0)" height="65" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="511" y="1152" />
  <polygon fill="rgb(0,0,0)" points="435,184 595,184 603,192 603,199 435,199 435,184" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" />
  <polygon fill="rgb(0,0,0)" points="435,570 643,570 651,578 651,585 435,585 435,570" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" />
  <polygon fill="rgb(0,0,0)" points="627,970 841,970 849,978 849,985 627,985 627,970" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="67" y="46" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="259" y="46" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="451" y="46" />
  <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="643" y="46" />
  <path d="M 128 80 L 128 1623" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="moccasin" height="1472" stroke="rgb(0,0,0)" width="8" x="124" y="135" />
  <rect fill="moccasin" height="65" stroke="rgb(0,0,0)" width="8" x="128" y="346" />
  <path d="M 320 80 L 320 1623" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="moccasin" height="116" stroke="rgb(0,0,0)" width="8" x="316" y="135" />
  <rect fill="moccasin" height="145" stroke="rgb(0,0,0)" width="8" x="316" y="506" />
  <rect fill="moccasin" height="65" stroke="rgb(0,0,0)" width="8" x="316" y="746" />
  <rect fill="moccasin" height="65" stroke="rgb(0,0,0)" width="8" x="316" y="1306" />
  <rect fill="moccasin" height="65" stroke="rgb(0,0,0)" width="8" x="316" y="1466" />
  <path d="M 512 80 L 512 1623" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="moccasin" height="145" stroke="rgb(0,0,0)" width="8" x="508" y="906" />
  <rect fill="moccasin" height="65" stroke="rgb(0,0,0)" width="8" x="508" y="1146" />
  <path d="M 704 80 L 704 1623" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4" />
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="64" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="42" x="128.0" y="66">service</text>
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="256" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="18" x="320.0" y="66">mgr</text>
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="448" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="72" x="512.0" y="66">mon-mgr-stat</text>
  <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="640" y="40" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="60" x="704.0" y="66">mon-health</text>
  <path d="M 136 135 L 312 135" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="304,131 312,135 304,139" stroke="rgb(0,0,0)" />
  <path d="M 328 185 L 416 185" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 416 185 L 416 201" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 416 201 L 328 201" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="336,197 328,201 336,205" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(173,216,230)" points="432,178 592,178 600,186 600,193 432,193 432,178" stroke="rgb(0,0,0)" />
  <path d="M 592 178 L 592 186" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 592 186 L 600 186" fill="none" stroke="rgb(0,0,0)" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="144" x="512.0" y="191">register the new service</text>
  <path d="M 136 251 L 312 251" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="144,247 136,251 144,255" stroke="rgb(0,0,0)" />
  <path d="M 140 346 L 312 346" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="148,342 140,346 148,350" stroke="rgb(0,0,0)" />
  <path d="M 136 411 L 312 411" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="304,407 312,411 304,415" stroke="rgb(0,0,0)" />
  <path d="M 136 506 L 312 506" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="304,502 312,506 304,510" stroke="rgb(0,0,0)" />
  <path d="M 328 571 L 416 571" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 416 571 L 416 587" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 416 587 L 328 587" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="336,583 328,587 336,591" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(173,216,230)" points="432,564 640,564 648,572 648,579 432,579 432,564" stroke="rgb(0,0,0)" />
  <path d="M 640 564 L 640 572" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 640 572 L 648 572" fill="none" stroke="rgb(0,0,0)" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="192" x="536.0" y="577">update/aggregate service metrics</text>
  <path d="M 136 651 L 312 651" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="144,647 136,651 144,655" stroke="rgb(0,0,0)" />
  <path d="M 136 746 L 312 746" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="304,742 312,746 304,750" stroke="rgb(0,0,0)" />
  <path d="M 136 811 L 312 811" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="144,807 136,811 144,815" stroke="rgb(0,0,0)" />
  <path d="M 328 906 L 504 906" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="496,902 504,906 496,910" stroke="rgb(0,0,0)" />
  <path d="M 520 971 L 608 971" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 608 971 L 608 987" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 608 987 L 520 987" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="528,983 520,987 528,991" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(173,216,230)" points="624,964 838,964 846,972 846,979 624,979 624,964" stroke="rgb(0,0,0)" />
  <path d="M 838 964 L 838 972" fill="none" stroke="rgb(0,0,0)" />
  <path d="M 838 972 L 846 972" fill="none" stroke="rgb(0,0,0)" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="198" x="731.0" y="977">store health checks in the report</text>
  <path d="M 328 1051 L 504 1051" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="336,1047 328,1051 336,1055" stroke="rgb(0,0,0)" />
  <path d="M 520 1146 L 696 1146" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="528,1142 520,1146 528,1150" stroke="rgb(0,0,0)" />
  <path d="M 520 1211 L 696 1211" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="688,1207 696,1211 688,1215" stroke="rgb(0,0,0)" />
  <path d="M 136 1306 L 312 1306" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="304,1302 312,1306 304,1310" stroke="rgb(0,0,0)" />
  <path d="M 136 1371 L 312 1371" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="144,1367 136,1371 144,1375" stroke="rgb(0,0,0)" />
  <path d="M 136 1466 L 312 1466" fill="none" stroke="rgb(0,0,0)" />
  <polygon fill="rgb(0,0,0)" points="304,1462 312,1466 304,1470" stroke="rgb(0,0,0)" />
  <path d="M 136 1531 L 312 1531" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4" />
  <polygon fill="rgb(0,0,0)" points="144,1527 136,1531 144,1535" stroke="rgb(0,0,0)" />
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="60" x="170.0" y="133">send(open)</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="90" x="267.0" y="344">send(configure)</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="72" x="176.0" y="504">send(report)</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="72" x="176.0" y="744">send(report)</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="96" x="380.0" y="904">send(mgr-report)</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="120" x="636.0" y="1144">gather health checks</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="72" x="176.0" y="1304">send(report)</text>
  <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="66" x="173.0" y="1464">send(close)</text>
</svg>
</div>
</div>
</div>
</div>



           </div>
           
          </div>
          <footer>
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
        <a href="../iana/" class="btn btn-neutral float-right" title="IANA 号" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
        <a href="../generatedocs/" class="btn btn-neutral float-left" title="Ceph 文档的构建" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
    </div>

  <hr/>

  <div role="contentinfo">
    <p>
        &#169; Copyright 2016, Ceph authors and contributors. Licensed under Creative Commons Attribution Share Alike 3.0 (CC-BY-SA-3.0).

    </p>
  </div> 

</footer>
        </div>
      </div>

    </section>

  </div>
  

  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script>

  
  
    
   

</body>
</html>